• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
    • Preguntas
    • Profesores
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Pruebas Online
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

369
Vistas
Cómo corregir TypeError [INVALID_TYPE]: el parámetro proporcionado no es un usuario ni un rol

Tengo un problema cuando intento crear un rol y un canal de texto. El rol creado establecerá permisos para el canal de texto.

 if (id === '4') { message.guild.roles.create({ name: `Owner`, color: `${color.white}`, permissions: ['ADD_REACTIONS'], hoist: true, }); let owner = message.guild.roles.cache.find((role) => role.name === 'Owner'); name = `${names.name}`, message.guild.channels .create(name, { type: 'GUILD_TEXT', permissionOverwrites: [ { id: owner, allow: ['ADD_REACTIONS'], deny: ['VIEW_CHANNEL'], }, ], }) .catch((err) => console.log(err)); }

Aunque crea el rol, cuando se trata del canal de texto, no puede encontrar el rol realizado y arroja un error:

 TypeError [INVALID_TYPE]: Supplied parameter is not a User nor a Role.

No estoy seguro de cómo solucionar esto.

almost 3 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Parece que no ha esperado que el rol cree una función. Intenta usar este código:

 if(id === '4'){ await message.guild.roles.create({ name: `Owner`, color: `${color.white}`, permissions: ["ADD_REACTIONS"], hoist: true }); let owner = message.guild.roles.cache.find(role => role.name === "Owner"); name = `${names.name}`, await message.guild.channels.create(name, { type: "GUILD_TEXT", permissionOverwrites: [{ id: owner, allow: ['ADD_REACTIONS'], deny: ['VIEW_CHANNEL'] }] }).catch(err => console.log(err)); }
almost 3 years ago · Juan Pablo Isaza Denunciar

0

roles.create() es un método asíncrono, lo que significa que devuelve una promesa y permite que el resto del código se ejecute sin bloquear nada. También significa que cuando intente encontrar el rol recién creado en la línea siguiente, no estará allí porque ni siquiera se creó, por lo que no estará undefined . Como undefined no es un Role o User válido, recibe un TypeError .

Sin embargo, roles.create() se resuelve en el rol recién creado, por lo que puede esperar a que se cree (usando await por ejemplo) y obtener su valor. De esta manera ni siquiera necesita encontrarlo más tarde. Echa un vistazo al código a continuación:

 let owner = await message.guild.roles.create({ name: `Owner`, color: color.white, permissions: ['ADD_REACTIONS'], hoist: true, }); message.guild.channels .create(names.name, { type: 'GUILD_TEXT', permissionOverwrites: [ { // now owner is a valid role id: owner, allow: ['ADD_REACTIONS'], deny: ['VIEW_CHANNEL'], }, ], }) .catch((err) => console.log(err));
almost 3 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda